// find, findIndex , map, reduce
// find: 在数组中查找第一个满足条件的元素
// const arr = [
//   { id: '01', salary: 10000, name: '张大大', pid: '', job: '项目经理' },
//   { id: '02', salary: 10000, name: '小亮', pid: '01', job: '产品leader' },
//   { id: '03', salary: 10000, name: '小美', pid: '01', job: 'UIleader' },
//   { id: '04', salary: 10000, name: '老马', pid: '01', job: '技术leader' },
//   { id: '05', salary: 10000, name: '老王', pid: '01', job: '测试leader' },
//   { id: '06', salary: 10000, name: '老李', pid: '01', job: '运维leader' },
//   { id: '07', salary: 10000, name: '小丽', pid: '02', job: '产品经理' },
//   { id: '08', salary: 10000, name: '大光', pid: '02', job: '产品经理' },
//   { id: '09', salary: 10000, name: '小高', pid: '03', job: 'UI设计师' },
//   { id: '10', salary: 10000, name: '小刘', pid: '04', job: '前端工程师' },
//   { id: '11', salary: 10000, name: '小华', pid: '04', job: '后端工程师' },
//   { id: '12', salary: 10000, name: '小李', pid: '04', job: '后端工程师' },
//   { id: '13', salary: 10000, name: '小赵', pid: '05', job: '测试工程师' },
//   { id: '14', salary: 10000, name: '小强', pid: '05', job: '测试工程师' },
//   { id: '15', salary: 10000, name: '小涛', pid: '06', job: '运维工程师' }
// ]
// 1. 在数组中查找pid为""的元素

// const obj = arr.find(function(item, index, arr1) {
//   console.log(item, index, arr1)
//   // return true || false
//   if (item.pid === '') {
//     return true
//   } else {
//     return false
//   }
// })
// const obj = arr.find(function(item, index, arr1) {
//   // console.log(item, index, arr1)
//   return item.pid === ''
//   // if (item.pid === '') {
//   //   return true
//   // } else {
//   //   return false
//   // }
// })

// 2. findIndex是返回满足条件的第一个元素的下标
// const obj = arr.findIndex(item => item.pid === '')

// 3. map对数组中每一个元素进行操作，把结果保存到新数组中
// const arr2 = arr.map((item, idx, arr) => {
//   // return item.name
//   return idx
// })
// const arr2 = arr.map(item => item.name)
// console.log(arr2)

// 4. reduce
// 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行)，将其结果汇总为单个返回值。
// const nums = [1, 2, 3, 4, 5]
// const sum = nums.reduce(function(acc, cur, idx) {
//   console.log(acc, cur, idx)
//   return acc + cur
// })

// console.log(sum)

// const nums = [1, 2, 3, 4, 5]
// const sum = nums.reduce(function(acc, cur, idx) {
//   console.log(acc, cur, idx)
//   return acc + cur
// }, 100)

// console.log(sum)

const arr = [
  { id: '01', salary: 10001, name: '张大大', pid: '', job: '项目经理' },
  { id: '02', salary: 10000, name: '小亮', pid: '01', job: '产品leader' },
  { id: '03', salary: 10000, name: '小美', pid: '01', job: 'UIleader' },
  { id: '04', salary: 10000, name: '老马', pid: '01', job: '技术leader' },
  { id: '05', salary: 10000, name: '老王', pid: '01', job: '测试leader' },
  { id: '06', salary: 10000, name: '老李', pid: '01', job: '运维leader' },
  { id: '07', salary: 10000, name: '小丽', pid: '02', job: '产品经理' },
  { id: '08', salary: 10000, name: '大光', pid: '02', job: '产品经理' },
  { id: '09', salary: 10000, name: '小高', pid: '03', job: 'UI设计师' },
  { id: '10', salary: 10000, name: '小刘', pid: '04', job: '前端工程师' },
  { id: '11', salary: 10000, name: '小华', pid: '04', job: '后端工程师' },
  { id: '12', salary: 10000, name: '小李', pid: '04', job: '后端工程师' },
  { id: '13', salary: 10000, name: '小赵', pid: '05', job: '测试工程师' },
  { id: '14', salary: 10000, name: '小强', pid: '05', job: '测试工程师' },
  { id: '15', salary: 10000, name: '小涛', pid: '06', job: '运维工程师' }
]
// filter
// 找到小亮的全部下属

// const xiaoliang = arr.find(item => item.name === '小亮')
// const nameList = arr.filter(item => item.pid === xiaoliang.id).map(item => item.name)
// console.log(nameList)

// 找到小刘的同事（不包括他自己）
const xiaoliu = arr.find(item => item.name === '小刘')

console.log(arr.filter(item => item.pid === xiaoliu.pid && item.name !== '小刘').map(item => item.name))
// const total = arr.map(item => item.salary).reduce((acc, cur) => acc + cur)

// console.log(total)

// const total = arr.reduce(function(acc, cur) {
//   console.log(acc, cur)
//   return { salary: acc.salary + cur.salary }
// })

// console.log(total.salary)
